/**
 * 给对象加上辅助功能：$state 
 * @param val 初始值，对象
 */
export default class BaseObject<T extends object> {
  
  constructor( val: T ) {
    // 设置具体的属性，浅层拷贝
    Object.assign(this, val)
  } 

  /**
   * 设置新值
   */
  set $state(value: T) {
    // 要不要判断 value 的属性是否完整？
    Object.assign(this, value)
  }
}